<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <li>01</li>
    <li>02</li>
    <li>03</li>
    <li>04</li>
    <li>05</li>
    <li>06</li>
    <li>07</li>
    <li>08</li>
    <li>09</li>
    <li>10</li>
</body>
<script>
    // call apply   

    // 1. 伪数组转真数组

    // 模拟封装 => 数组的slice

    // Symbol.slice = Symbol("slice");  // 创建Symbol数据 存储到Symbol函数中(静态属性)

    // Array.prototype[Symbol.slice] = function (startIndex = 0, endIndex = this.length) {
    //     // this -> 调用此方法的实例化对象
    //     var list = [];
    //     for (var i = startIndex; i < endIndex; i++) {
    //         var item = this[i];
    //         list.push(item);
    //     }
    //     return list;
    // }

    // var arr = [1, 4, 7, 2, 5, 8, 3, 6, 9];
    // var result = arr[Symbol.slice](3, 6); // this -> arr
    // console.log(result);

    // var liList = document.querySelectorAll("li");
    // console.log(liList);

    // var result = Array.prototype.slice.call(liList);
    // console.log(result);


    // 取数组的最大值



    // Symbol.max = Symbol("max");
    // Math[Symbol.max] = function () {
    //     // arguments = [1, 4, 7, 2, 5, 8, 3, 6, 9]
    //     var max = arguments[0]; //假设第一参数为最大值
    //     for (var i = 0; i < arguments.length; i++) {
    //         var item = arguments[i];
    //         if (max < item) {
    //             max = item;
    //         }
    //     }
    //     return max;
    // }
    // var max = Math[Symbol.max](1, 4, 7, 2, 5, 8, 3, 6, 9);
    // console.log(max);


    // var max = Math.max(1, 4, 7, 2, 5, 8, 3, 6, 9);
    // console.log(max);

    var arr = [1, 4, 7, 2, 5, 8, 3, 6, 9];
    // var max = Math.max(...arr);
    var max = Math.max.apply(null, arr);
    // console.log(max);




    var data = {
        a: 1,
        b: 2,
    }

    var obj = {
        a: 100,
        b: 200,
        sum: function () {
            return this.a + this.b;
        }.bind(data)
    }
    var result = obj.sum();
    console.log(result);

    // var result = obj.sum.call(data);
    // console.log(result);














</script>

</html>